package common.manager
{
	import common.AFactory.AScene;
	
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.geom.Rectangle;
	
	/**
	 * 场景管理器
	 * @author shishujun
	 * 
	 */
	public class GScene
	{
		public static var sceneFps : Number;					//场景帧频
		public static var sceneWidth : Number;					//场景宽度
		public static var sceneHeight : Number;				//场景高度
		public static var sceneBound : Rectangle;				//场景区域
		
		public static var currScene : AScene;					//当前场景
		public static var sceneGroup : Object;					//场景数据集
		public static var sceneRoot : Sprite;					//场景父容器
		
		public function GScene()
		{
		}
		
		/**
		 * 创建场景管理器 
		 * @param width			场景宽
		 * @param height		场景高
		 * @param root			场景父容器
		 * 
		 */		
		public static function bulid(width : Number, height : Number, root : Sprite) : void
		{
			sceneBound = new Rectangle(0,0,width,height);
			sceneGroup = new Object;
			sceneRoot = root;
			
			sceneWidth = width;
			sceneHeight = height;
		}
		
		/**
		 * 销毁场景管理器 
		 * 
		 */		
		public static function destory() : void
		{
			sceneBound = null;
			sceneGroup = null;
		}
		
		/**
		 * 注册场景 
		 * @param id				场景ID
		 * @param sceneClass		场景类
		 * 
		 */		
		public static function addScene(id : String, sceneClass : AScene) : void
		{
			sceneGroup[id] = sceneClass;
		}
		
		/**
		 * 清除场景 
		 * @param id				场景ID
		 * 
		 */		
		public static function clearScene(id : String) : void
		{
			currScene.destory();
		}
		
		/**
		 * 打开场景 
		 * @param id				场景ID
		 * 
		 */		
		public static function openScene(id : String) : void
		{
			if(currScene)
			{
				currScene.destory();
			}
			currScene = sceneGroup[id];
			currScene.bulid(sceneRoot);
		}
	}
}